﻿using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Data;
using System.IO;
using System.Linq;
using System.Net.Mail;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using Util;

public partial class Listado : System.Web.UI.Page
{
   
    #region variables globales

    HttpCookie cookie = null;
    public static List<DateTime> listVacaciones = new List<DateTime>();
    string[,] holidays = new String[13, 32];
    string usuario;
    string jefe;
    string administrador;
    string enero;
    string febrero;
    string marzo;
    string abril;
    string mayo;
    string junio;
    string julio;
    string agosto;
    string septiembre;
    string octubre;
    string noviembre;
    string diciembre;
    string edificio;
    DataRow[] foundRows;
    Table ta = new Table();
    string expression;
    int inicio = 0;
    DateTime fechaActual = DateTime.Now;
    DateTime diaSeleccionado;
    Image img = new Image();
    Image imgDenegado = new Image();
    bool trabajaSabado = false;

    #endregion
    public class TreeMenu
    {
        public string NombreEmpleado;
        public string Usuario;
        public string IdResponsable;
        public string idEmp;
        public string unidad;
    }

    protected void Page_Load(object sender, EventArgs e)
    {

        Image banner = (Image)(Master.FindControl("Image1"));
        banner.ImageUrl = "Http://"+ Server.MachineName + ".igrupobbva/Glu/logo.jpg";

        HyperLink link = (HyperLink)(Master.FindControl("HyperLink1"));
        link.NavigateUrl = "Http://intraopplus.igrupobbva/Glu/default.aspx";

        this.CalenderVacaciones.AsignarAnyo(DateTime.Now.Year);
        this.CalenderVacaciones.UpdatePanelesByUser(MiSession.UserName);
        //Cargamos la localidade

        //CalenderVacaciones.UpdatePaneles(int.Parse(lstAmbito.SelectedValue.ToString()));/**/
        
        /*
        enero = "1/1/" + fechaActual.Year.ToString();
        febrero = "1/2/" + fechaActual.Year.ToString();
        marzo = "1/3/" + fechaActual.Year.ToString();
        abril = "1/4/" + fechaActual.Year.ToString();
        mayo = "1/5/" + fechaActual.Year.ToString();
        junio = "1/6/" + fechaActual.Year.ToString();
        julio = "1/7/" + fechaActual.Year.ToString();
        agosto = "1/8/" + fechaActual.Year.ToString();
        septiembre = "1/9/" + fechaActual.Year.ToString();
        octubre = "1/10/" + fechaActual.Year.ToString();
        noviembre = "1/11/" + fechaActual.Year.ToString();
        diciembre = "1/12/" + fechaActual.Year.ToString();

        CalendarEnero.VisibleDate = DateTime.Parse(enero);
        CalendarFebrero.VisibleDate = DateTime.Parse(febrero);
        CalendarMarzo.VisibleDate = DateTime.Parse(marzo);
        CalendarAbril.VisibleDate = DateTime.Parse(abril);
        CalendarMayo.VisibleDate = DateTime.Parse(mayo);
        CalendarJunio.VisibleDate = DateTime.Parse(junio);
        CalendarJulio.VisibleDate = DateTime.Parse(julio);
        CalendarAgosto.VisibleDate = DateTime.Parse(agosto);
        CalendarSeptiembre.VisibleDate = DateTime.Parse(septiembre);
        CalendarOctubre.VisibleDate = DateTime.Parse(octubre);
        CalendarNoviembre.VisibleDate = DateTime.Parse(noviembre);
        CalendarDiciembre.VisibleDate = DateTime.Parse(diciembre);
        if (Request.Cookies["micookie"] != null)
        {
            if (cookie == null)
            {
                cookie = Request.Cookies["micookie"];
                cookie.Expires = DateTime.Now.AddDays(1);
                recogerdatos();
            }
        }
        administrador = (String)Session["Username"];
        administrador = "xe24384";
        if (administrador == null)
        {

            Response.Redirect("~/autorizacion.aspx");

        }

        //administrador = "xe24553";
        taUsuarios.FillByID(dtUsuarios, administrador);
        if (dtUsuarios.Rows[0]["idUnidad"].ToString() != "11445")
        {
            if ((dtUsuarios.Rows[0]["idUnidad"].ToString() != "11448"))
	        {
                Response.Redirect("~/autorizacion.aspx");
            }
        }
        //Listado para guardar datos de los usuarios del árbol.
        List<TreeMenu> lstMenuItem = new List<TreeMenu>();

        if (Page.IsPostBack != true)
        {
            taListadoEmpleados.Fill(dtListadoEmpleados);

            foreach (DataRow dr in dtListadoEmpleados)
            {
                TreeMenu Item = new TreeMenu();

                Item.Usuario = dr["usuario"].ToString();
                Item.IdResponsable = dr["posicionJefe"].ToString();
                Item.NombreEmpleado = dr["nombreCompleto"].ToString();
                Item.unidad = dr["UNIDAD"].ToString();
                Item.idEmp = dr["posicionTrabajador"].ToString();
                lstMenuItem.Add(Item);
            }


            TreeNode nuevoNodo = new TreeNode();
            nuevoNodo.Text = "Directorio OPPLUS";
            nuevoNodo.NavigateUrl = "";

            TreeView1.Nodes.Add(nuevoNodo);
            TreeView1.Nodes[0].SelectAction = TreeNodeSelectAction.None;
            LlenarTreeView("109584", lstMenuItem, TreeView1.Nodes);
            
            TreeView1.CollapseAll();
        }
        else {
            PnlPrincipal.Visible = true;
            UpdatePanelGeneral.Update();
        }
*/
       
    }

    private void LlenarTreeView(String CodPadre, List<TreeMenu> NodoItems, TreeNodeCollection Nodos)
    {
        foreach (TreeMenu tm in NodoItems)
        {
            if ((CodPadre.ToUpper()) == (tm.IdResponsable.ToUpper()))
            {
                TreeNode nuevoNodo;

                nuevoNodo = new TreeNode(tm.NombreEmpleado + " (" + tm.unidad + ")", tm.Usuario);
                
                Nodos[Nodos.Count - 1].ChildNodes.Add(nuevoNodo);

                LlenarTreeView(tm.idEmp, NodoItems, Nodos[Nodos.Count - 1].ChildNodes);
            }
        }
    }



    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
     /*   TreeView Evento;
        Evento = (TreeView)sender;     


        if (Request.Cookies["micookie"] != null)
        {
            if (cookie == null)
            {
                cookie = Request.Cookies["micookie"];
                cookie.Expires = DateTime.Now.AddDays(1);
                recogerdatos();
            }
        }
        usuario = Evento.SelectedNode.Value.ToString();
        img.ImageUrl = "img/ok.png";
        imgDenegado.ImageUrl = "img/not_ok.png";
        lblUsuarioNumero.Text = usuario;
        taUsuarios.FillByID(dtUsuarios, usuario);
        lblNombreUsuario.Text = dtUsuarios.Rows[0]["primerApellido"].ToString() + " " + dtUsuarios.Rows[0]["segundoApellido"].ToString() + ", " + dtUsuarios.Rows[0]["nombre"].ToString();
        edificio = dtUsuarios.Rows[0]["idEdificio"].ToString();
        taDiasFestivos.FillByUsuario(dtDiasFestivos, Convert.ToInt32(edificio));
        taVacaciones.FillByID(dtVacaciones, usuario);
        taVacaciones.FillByID(dtVacaciones, usuario);
        lblVacacionesPendientes.Text = dtVacaciones.Rows[0]["Vacaciones"].ToString();
        lblAsuntosPropios.Text = dtVacaciones.Rows[0]["LibreDisposicion"].ToString();
        lblFestivoTrabajado.Text = dtVacaciones.Rows[0]["DiasCompensacion"].ToString();
        lblTotalSolicitados.Text = Convert.ToString(Convert.ToInt32(lblVacacionesPendientes.Text) + Convert.ToInt32(lblAsuntosPropios.Text) + Convert.ToInt32(lblFestivoTrabajado.Text));
        trabajaSabado = bool.Parse(dtUsuarios.Rows[0]["TrabajaSabado"].ToString());

        //si el usuario es la raiz del arbol no se busca a su jefe
        if (usuario != "UA13643")
        {
            taListadoJefes.Fill(dtListadoJefes, usuario);
            gridJefes.DataSource = dtListadoJefes;
            gridJefes.DataBind();
            lblResponsableNombre.Text = gridJefes.Rows[0].Cells[2].Text + " " + gridJefes.Rows[0].Cells[3].Text + ", " + gridJefes.Rows[0].Cells[1].Text;
            jefe = gridJefes.Rows[0].Cells[0].Text;
        }
        else {
            lblResponsableNombre.Text = "";
        }
        Evento.SelectedNode.Selected=false;*/
    }
    
  /*    protected void Calendar_DayRender(object sender, DayRenderEventArgs e)
    {
      if (inicio == 0)
        {
            if (usuario == null) return;
            taDetalleVacaciones.Fill(dtDetalleVacaciones, e.Day.Date, usuario);

            if ((dtDetalleVacaciones.Count == 1))
            {
                if ((dtDetalleVacaciones.Rows[0]["tipo"].ToString() == "1") && (dtDetalleVacaciones.Rows[0]["comunicacion_a_Jefe"].ToString() == "True"))
                {
                    e.Cell.BackColor = System.Drawing.Color.Lime;
                    e.Cell.ForeColor = System.Drawing.Color.White;
                    if (dtDetalleVacaciones.Rows[0]["diaAprobado"].ToString() == "1")
                    {
                        e.Cell.Controls.Add(img);
       
                    }
                    if (dtDetalleVacaciones.Rows[0]["diaAprobado"].ToString() == "2")
                    {
                        e.Cell.Controls.Add(imgDenegado);
                    }
                }
                if ((dtDetalleVacaciones.Rows[0]["tipo"].ToString() == "2") && (dtDetalleVacaciones.Rows[0]["comunicacion_a_Jefe"].ToString() == "True"))
                {
                    e.Cell.BackColor = System.Drawing.Color.Maroon;
                    e.Cell.ForeColor = System.Drawing.Color.White;
                    if (dtDetalleVacaciones.Rows[0]["diaAprobado"].ToString() == "1")
                    {
                        e.Cell.Controls.Add(img);

                    }
                    if (dtDetalleVacaciones.Rows[0]["diaAprobado"].ToString() == "2")
                    {
                        e.Cell.Controls.Add(imgDenegado);
                    }
                }
                if ((dtDetalleVacaciones.Rows[0]["tipo"].ToString() == "3") && (dtDetalleVacaciones.Rows[0]["comunicacion_a_Jefe"].ToString() == "True"))
                {
                    e.Cell.BackColor = System.Drawing.Color.Gray;
                    e.Cell.ForeColor = System.Drawing.Color.White;
                    if (dtDetalleVacaciones.Rows[0]["diaAprobado"].ToString() == "1")
                    {
                        e.Cell.Controls.Add(img);

                    }
                    if (dtDetalleVacaciones.Rows[0]["diaAprobado"].ToString() == "2")
                    {
                        e.Cell.Controls.Add(imgDenegado);
                    }
                }
            }
            if (dtDetalleVacaciones.Count == 0)
            {
                e.Cell.BackColor = System.Drawing.Color.White;
                e.Cell.ForeColor = System.Drawing.Color.Black;
            }
            //Otros Meses
            if ((e.Day.IsOtherMonth))
            {
                e.Cell.Controls.Remove(img);
                e.Cell.Controls.Remove(imgDenegado);

                e.Cell.BackColor = System.Drawing.Color.White;
                e.Cell.ForeColor = System.Drawing.Color.White;
            }
        }
        else if (diaSeleccionado.Month == e.Day.Date.Month)
        {
            taDetalleVacaciones.Fill(dtDetalleVacaciones, e.Day.Date, usuario);
            if ((dtDetalleVacaciones.Count == 1))
            {
                if ((dtDetalleVacaciones.Rows[0]["tipo"].ToString() == "1") && (dtDetalleVacaciones.Rows[0]["comunicacion_a_Jefe"].ToString() == "True"))
                {
                    e.Cell.BackColor = System.Drawing.Color.Lime;
                    e.Cell.ForeColor = System.Drawing.Color.White;
                    if (dtDetalleVacaciones.Rows[0]["diaAprobado"].ToString() == "1")
                    {
                        e.Cell.Controls.Add(img);

                    }
                    if (dtDetalleVacaciones.Rows[0]["diaAprobado"].ToString() == "2")
                    {
                        e.Cell.Controls.Add(imgDenegado);
                    }

                }
                if ((dtDetalleVacaciones.Rows[0]["tipo"].ToString() == "2") && (dtDetalleVacaciones.Rows[0]["comunicacion_a_Jefe"].ToString() == "True"))
                {
                    e.Cell.BackColor = System.Drawing.Color.Maroon;
                    e.Cell.ForeColor = System.Drawing.Color.White;
                    if (dtDetalleVacaciones.Rows[0]["diaAprobado"].ToString() == "1")
                    {
                        e.Cell.Controls.Add(img);

                    }
                    if (dtDetalleVacaciones.Rows[0]["diaAprobado"].ToString() == "2")
                    {
                        e.Cell.Controls.Add(imgDenegado);
                    }
                }
                if ((dtDetalleVacaciones.Rows[0]["tipo"].ToString() == "3") && (dtDetalleVacaciones.Rows[0]["comunicacion_a_Jefe"].ToString() == "True"))
                {
                    e.Cell.BackColor = System.Drawing.Color.Gray;
                    e.Cell.ForeColor = System.Drawing.Color.White;
                    if (dtDetalleVacaciones.Rows[0]["diaAprobado"].ToString() == "1")
                    {
                        e.Cell.Controls.Add(img);

                    }
                    if (dtDetalleVacaciones.Rows[0]["diaAprobado"].ToString() == "2")
                    {
                        e.Cell.Controls.Add(imgDenegado);
                    }
                }
            }
            if (dtDetalleVacaciones.Count == 0)
            {
                e.Cell.Controls.Remove(img);
                e.Cell.Controls.Remove(imgDenegado);
                e.Cell.BackColor = System.Drawing.Color.White;
                e.Cell.ForeColor = System.Drawing.Color.Black;
            }
        }
        //Festivos
        expression = " Festivo='" + e.Day.Date + "'";
        foundRows = dtDiasFestivos.Select(expression);
        for (int i = 0; i < foundRows.Length; i++)
        {
            e.Cell.ForeColor = System.Drawing.Color.Coral;

        }
        
        if (((e.Day.Date.DayOfWeek.ToString() == "Sunday") && (trabajaSabado == true)) 
           || (dtDetalleVacaciones.Count == 0) && (e.Day.Date.DayOfWeek.ToString() == "Saturday"))
        {
            e.Cell.BackColor = System.Drawing.Color.LightGreen;
            e.Day.IsSelectable = false;
        }
        else if((trabajaSabado == false)&&(e.Day.IsWeekend)) {
            e.Cell.BackColor = System.Drawing.Color.LightGreen;
            e.Day.IsSelectable = false;
        }
    
        //Otros Meses
        if ((e.Day.IsOtherMonth))
        {
            e.Cell.BackColor = System.Drawing.Color.White;
            e.Cell.ForeColor = System.Drawing.Color.White;
        }
        e.Day.IsSelectable = false;
    }

    protected void Calendar_SelectionChanged(object sender, EventArgs e)
    {
        inicio = 1;

        diaSeleccionado = ((Calendar)(sender)).SelectedDate.Date;
        ((Calendar)(sender)).SelectedDates.Clear();
        taVacaciones.FillByID(dtVacaciones, usuario);
        UpnlRecuento.Update();
        UpnlPeticionNueva.Update();
    }
    */
    void recogerdatos() //Buscar datos del usuario logueado e introducirlos en variables de sesión.
    {
     /*   try
        {
            Session["Username"] = Request.Cookies["micookie"].Values[0];
            String strCookieValue = Convert.ToString(cookie.Values[0]);
        }
        catch (Exception)
        {
            Response.Redirect("~/autorizacion.aspx");
            throw;
        }*/

    }


    protected void btnExcelCambios_Click(object sender, EventArgs e)
    {
/*
        taVacacionesChequeadas.Fill(dtVacacionesChequeadas);

        for (int k = 0; k < dtVacacionesChequeadas.Count; k++)
        {
            TableRow fila = new TableRow();
     
            TableCell celdaMatricula = new TableCell();
            TableCell celdaNombre = new TableCell();
            TableCell celdaFecha = new TableCell();
            TableCell celdaTipo = new TableCell();
            TableCell celdaAprobado = new TableCell();

            celdaMatricula.Text= dtVacacionesChequeadas.Rows[k]["Matricula"].ToString();
            celdaNombre.Text=  dtVacacionesChequeadas.Rows[k]["Nombre"].ToString();
            celdaFecha.Text=    dtVacacionesChequeadas.Rows[k]["diaVacaciones"].ToString();
            if (dtVacacionesChequeadas.Rows[k]["tipo"].ToString() == "1") {
                celdaTipo.Text = "Vacaciones";
            }
            if (dtVacacionesChequeadas.Rows[k]["tipo"].ToString() == "2")
            {
                celdaTipo.Text = "Libre disposición";
            }
            if (dtVacacionesChequeadas.Rows[k]["tipo"].ToString() == "3")
            {
                celdaTipo.Text = "Compensación";
            }
            if (dtVacacionesChequeadas.Rows[k]["diaAprobado"].ToString()=="1") {
                celdaAprobado.Text = "Aceptado";
            }
            if (dtVacacionesChequeadas.Rows[k]["diaAprobado"].ToString() == "2")
            {
                celdaAprobado.Text = "Rechazado";
            }
            fila.Cells.Add(celdaMatricula);
            fila.Cells.Add(celdaNombre);
            fila.Cells.Add(celdaFecha);
            fila.Cells.Add(celdaTipo);
            fila.Cells.Add(celdaAprobado);
            Table1.Rows.Add(fila);*/
       // }

     
        /* Sin error */
   /*     StringBuilder sb = new StringBuilder();
        StringWriter sw = new StringWriter(sb);
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        Page page = new Page();
        HtmlForm form = new HtmlForm();
        Table1.EnableViewState = false;
        page.EnableEventValidation = false;
        page.DesignerInitialize();
        page.Controls.Add(form);
        form.Controls.Add(Table1);
        page.RenderControl(htw);
        System.IO.StreamWriter z_varocioStreamWriter = new System.IO.StreamWriter("C:\\inetpub\\wwwwroot\\Vacaciones\\vacacionesChequeadas" + DateTime.Now.ToString().Replace("/","_").Replace(":","_").Trim() + ".xls", false, System.Text.Encoding.UTF8);
        z_varocioStreamWriter.Write(sb.ToString());
        z_varocioStreamWriter.Close();
        taDetalleVacaciones.UpdateChequeados();    
        Response.Clear();
        Response.Buffer = true;
        //Response.ContentType = "application/vnd.ms-excel";
        Response.ContentType = "text/plain";
        Response.AddHeader("Content-Disposition", "attachment;filename=vacacionesChequeadas" + DateTime.Now.ToString().Replace("/", "_").Replace(":", "_").Trim() + ".xls");
        Response.Charset = "UTF-8";
        Response.ContentEncoding = Encoding.Default;
        Response.Write(sb.ToString());
        Response.End();*/
    }
}